import com.mysql.jdbc.jdbc2.optional.MysqlDataSource;

import javax.sql.DataSource;//JDBC所在的包。类和方法都在里面。
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.Scanner;

/**
 * Created with IntelliJ IDEA.
 * User:xieChao
 * Date:2022/10/30 22:09
 */
public class TestJDBC {
    public static void main(String[] args) throws SQLException {
        Scanner scanner = new Scanner(System.in);
/**
 * 第一步
 */
        /**
         * 这样写也行，不太规范，以下为准
         */
//        MysqlDataSource dataSource1 = new MysqlDataSource();
//        dataSource1.setURL();
//        dataSource1.setUser();
//        dataSource1.setPassword();

        DataSource dataSource = new MysqlDataSource();//向上转型
        //设置数据库所在的位置
        ((MysqlDataSource)dataSource).setURL("jdbc:mysql://127.0.0.1:3306/java1?characterEncoding=utf8&useSSL=false");//向下转型写法
        //设置登录数据库的用户名
        ((MysqlDataSource)dataSource).setUser("root");//固定写法
        //设置登录数据库的密码
        ((MysqlDataSource)dataSource).setPassword("001110");//mysql密码

        /**
         * 第二步，让数据库和代码建立联系
         */
        Connection connection = dataSource.getConnection();
        //让用户通过控制台输入待插入的数据
        System.out.println("请输入id：");
        int id = scanner.nextInt();
        System.out.println("请输入姓名:");
        String name = scanner.next();
        System.out.println("请输入年龄：");
        int age = scanner.nextInt();
        System.out.println("请输入成绩：");
        double score = scanner.nextDouble();

        /**
         * 第三步，操作数据库
         */
        String sql = "insert into student values(?,?,?,?)";
        //把String类型的sql包装成一个 ”语句对象“
        PreparedStatement statement = connection.prepareStatement(sql);
        /**
         * 替换工作，将上面 ？ 替换你的输入
         */
        statement.setInt(1,id);//把第一个 ？ 替换成 id
        statement.setString(2,name);
        statement.setInt(3,age);
        statement.setDouble(4,score);
        System.out.println("statement: "+statement);//打印拼装好的sql

        /**
         * 第四步，执行sql
         */
       int ret = statement.executeUpdate();
        System.out.println(ret);

        /**
         * 第五步，sql已经执行完，释放资源
         */
        statement.close();
        connection.close();
    }
}
